package collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 数组转换为集合
 * 数组的工具类:Arrays的静态方法asList
 */
public class ArrayToListDemo {
    public static void main(String[] args) {
        String[] array = {"one","two","three","four","five"};
        System.out.println("array:"+ Arrays.toString(array));//array:[one, two, three, four, five]

        List<String> list = Arrays.asList(array);
        System.out.println("list"+list);//list[one, two, three, four, five]
        /*
            对数组转换而来的集合进行元素操作, 就是对原数组的操作
         */
        list.set(2,"six");
        System.out.println("list:"+list);//list:[one, two, six, four, five]
        System.out.println("array:"+Arrays.toString(array));//array:[one, two, six, four, five]
        /*
            由于数组定长, 因此集合会改变元素个数的操作都是不支持的, 会抛出异常:
            UnsupportedOperationException
         */
        //list.add("seven");

        /*
            如果要对集合进行操作, 需要创建一个新集合
            所有的集合都支持一个参数为Collection类型的构造器, 作用是在创建当前集合的同时包含给定集合中的所有元素
         */
        List<String> list2 = new ArrayList<>(list);
        System.out.println("list2:"+list2);//list2:[one, two, six, four, five]
        list2.add("seven");
        System.out.println("list2:"+list2);//list2:[one, two, six, four, five, seven]
    }
}
